//
//  Image+Extension.swift
//  Swift1
//
//  Created by geek-duan on 2017/9/21.
//  Copyright © 2017年 geek-duan. All rights reserved.
//

import UIKit

extension UIImage {
 
    // MARK : 绘制圆形图像
    ///
    /// - Parameters:
    ///   - size: 图像大小
    ///   - backColor: 背景填充颜色
    ///   - lineColor: 边框颜色
    ///   - lineWidth: 边框宽度
    /// - Returns: 圆形图像
    func dl_circleGraphImage(size: CGSize?, backColor: UIColor = UIColor.white, lineColor: UIColor = UIColor.darkGray, lineWidth: CGFloat = 2.0) -> UIImage? {
        
        //判断size
        var size = size
        if size == nil {
            size = self.size
        }
        
        let rect = CGRect(origin: CGPoint(), size: size!)
        /**
         开启上下绘图上下文：
         size: CGSize : 绘图区域大小
         opaque: Bool : 是否不透明 ：false表示透明，true表示不透明
         scale: CGFloat : 分辨率，默认为1.0， 0表示按照设备分辨率
         **/
        UIGraphicsBeginImageContextWithOptions(rect.size, true, 0)
        //--------------------------------------------------//
        
        //背景填充
        backColor.setFill()
        UIRectFill(rect)
        //画一个圆形路径
        let path = UIBezierPath.init(ovalIn: rect)
        path.addClip() //进行裁切
        
        //--------------------------------------------------//
        //在指定区域开始绘画
        draw(in: rect)
        
        //边框大小和颜色
        lineColor.setStroke()
        path.lineWidth = lineWidth
        path.stroke()
        
        //获取当前已经画好的图
        let resultImage = UIGraphicsGetImageFromCurrentImageContext()
        //关闭上下文
        UIGraphicsEndImageContext()
        
        return resultImage
    }
    
    // 通过"UIColor"返回一张“UIImage”
    func imageFromColor(color: UIColor) -> UIImage {
        //创建1像素区域并开始图片绘图
        let rect = CGRect(x: 0, y: 0, width: 1, height: 1)
        UIGraphicsBeginImageContext(rect.size)
        
        //创建画板并填充颜色和区域
        let context = UIGraphicsGetCurrentContext()
        context!.setFillColor(color.cgColor)
        context!.fill(rect)
        
        //从画板上获取图片并关闭图片绘图
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        
        return image!
    }
}
